package com.cskaoyan.javase.oop1._16access._2member._0one;

/**
 * 修饰类中成员和构造器时,四种访问级别皆可用
 *      1.private: 仅限同类中访问
 *      2.默认访问权限: 同包下才可用
 *      3.public: 不同包下也能够访问
 *
 * 注意事项:
 *      1.思考: 如果没有class类的访问权限,能不能访问类中成员(假设类中成员是public)
 *          不能
 *          如果没有class的访问权限,不谈访问类中成员(包括普通成员和静态成员)
 *
 *      2.私有的访问权限,意味着在这个类下,可以任意访问该类的成员.
 *          不管这个成员是从何而来的,只要是这个类型,都是可以访问.
 *
 *      3.局部变量已经被方法或者作用域限制死了作用范围,不再需要访问权限控制了.
 *          局部变量不能用访问权限修饰符修饰
 *          也不能用static修饰
 *
 * @since 16:28
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.age);
        // 'name' has private access in 'com.cskaoyan.javase.oop1._16access._2member._0one.Student'
        // System.out.println(s.name);
    }
}

class Student {
    // 默认的访问权限
    int age;
    // 私有的名字,仅能够在类中访问
    private String name;

    // 不同包下也能够访问
    public String gender;

    static int num;

    Student() {
    }

    public void test(Student s){
        // 当前处在Student类下,同类中私有成员也是可以访问,不管这个对象是从何而来的
        System.out.println(s.name);
    }
}
